package Reflex.field;

import org.junit.Test;

import java.lang.reflect.Field;

public class TestField {
    @Test
    public void testGetFields(){
        Class catClass=Cat.class;

        Field[] fields=catClass.getFields();
        for (Field field : fields) {//得到两个静态的
            System.out.println(field.getName()+"-----"+field.getType());//名称和类型
        }

        Field[] fieldss=catClass.getDeclaredFields();
        for (Field field : fieldss) {//得到所有的
            System.out.println(field.getName()+"-----"+field.getType());//名称和类型
        }
    }
    @Test
    public void testGetFields02() throws NoSuchFieldException {
        Class catClass=Cat.class;
        Field name=catClass.getDeclaredField("name");
        System.out.println(name.getName());
    }
    @Test
    public void testGetFields03() throws Exception {//获取成员变量的应用，赋值和取值
        //给成员变量赋值
        Cat cat=new Cat();
        Class catClass=Cat.class;
        Field name=catClass.getDeclaredField("name");
        name.setAccessible(true);//这里要取消访问权限
        name.set(cat,"范钦昱");
        System.out.println(cat.getName());
        //给成员变量取值
        String name11=(String)name.get(cat);
        System.out.println(name11);
    }


}
